home *** CD-ROM | disk | FTP | other *** search
/ CD ROM Paradise Collection 4 / CD ROM Paradise Collection 4 1995 Nov.iso / program / nrpas13.zip / TWOFFT.DEM < prev    next >
Text File  |  1991-04-29  |  1KB  |  57 lines

  1. PROGRAM d12r2(input,output);
  2. (* driver for routine TWOFFT *)
  3. CONST
  4.    n=32;
  5.    n2=64;   (* n2=2*n *)
  6.    per=8;
  7.    pi=3.1415926;
  8. TYPE
  9.    glnarray = ARRAY [1..n] OF real;
  10.    gl2narray = ARRAY [1..n2] OF real;
  11.    gldarray = gl2narray;
  12. VAR
  13.    i,isign : integer;
  14.    data1,data2 : glnarray;
  15.    fft1,fft2 : gl2narray;
  16.  
  17. PROCEDURE prntft(data : gldarray; nn : integer);
  18. VAR
  19.    ii,mm,n : integer;
  20. BEGIN
  21.    writeln('n':4,'real(n)':13,'imag.(n)':13,'real(N-n)':12,'imag.(N-n)':13);
  22.    writeln (0:4,data[1]:14:6,data[2]:12:6,data[1]:12:6,data[2]:12:6);
  23.    mm := nn DIV 2;
  24.    FOR ii := 1 to mm DO BEGIN
  25.       n := 2*ii+1;
  26.       writeln (((n-1) DIV 2):4,data[n]:14:6,data[n+1]:12:6,
  27.          data[2*nn+2-n]:12:6,data[2*nn+3-n]:12:6)
  28.    END;
  29.    writeln (' press return to continue ...');
  30.    readln
  31. END;
  32.  
  33. (*$I MODFILE.PAS *)
  34. (*$I FOUR1.PAS *)
  35.  
  36. (*$I TWOFFT.PAS *)
  37.  
  38. BEGIN
  39.    FOR i := 1 to n DO BEGIN
  40.       data1[i] := round(cos(i*2.0*pi/per));
  41.       data2[i] := round(sin(i*2.0*pi/per));
  42.    END;
  43.    twofft(data1,data2,fft1,fft2,n);
  44.    writeln ('fourier transform of first function:');
  45.    prntft(fft1,n);
  46.    writeln ('fourier transform of second function:');
  47.    prntft(fft2,n);
  48. (* invert transform *)
  49.    isign := -1;
  50.    four1(fft1,n,isign);
  51.    writeln ('inverted transform  =  first function:');
  52.    prntft(fft1,n);
  53.    four1(fft2,n,isign);
  54.    writeln ('inverted transform  =  second function:');
  55.    prntft(fft2,n)
  56. END.
  57.